﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace UnliQ.Service.Contracts
{
    public interface IQueueService
    {
        Response<EventDTO> GetEvent(int Id);

        Response<List<EventDTO>> GetAllEvents();

        Response<EventDTO> GetEventDetails(EventDTO eventObj);

        Response<int> Insert(EventDTO eventObj);

        Response Update(EventDTO eventObj);

        Response Delete(int Id);

        Response<bool> AddInitValues(IList<EventDTO> events, IList<EventDateDTO> eventDates, IList<RecurringDTO> recurring, IList<EventRecurringDTO> eventsRecurring, IList<EventDateSequenceDTO> eventDateSequence, IList<EventTriggerDTO> eventTrigger);

        Response<int> AssignUserToQueue(int userId, string eventName = "", int eventId = 0);

        Response RemoveUserFromQueue(int userId, string eventName = "", int eventId = 0);

        Response<List<EventDTO>> GetActiveList();

        Response<List<EventDTO>> GetUserEvents(int userId);

        Response<List<int>> GetUsersInEvent(string eventName = "", int eventId = 0);

        Response<int> GetCurrentQueue(string eventName = "", int eventId = 0);

        Response<int> NextQueue(string eventName = "", int eventId = 0);

        Response<List<EventDTO>> GetUserTriggeredEvents(int userId);
    }
}
